#include<iostream>
#include<string>
using namespace std;

// int main()
// {
//     string s1;          // 默认构造，空串
//     string s2("abcd");  // 用const char*构造
//     string s3 = "ijklm"; // 隐式类型转换
//     string s4 = s3;     // 拷贝构造
//     string s5(10, 'x');

//     cout << s1 << endl;
//     cout << s2 << endl;
//     cout << s3 << endl;
//     cout << s4 << endl;
//     cout << s5 << endl;

//     string t;
//     cin >> t;           // 可以用cin、cout，string支持中文字符
//     cout << t << endl;
//     return 0;
// }


// int main()
// {
//     string t1 = "Hello World";
//     cout << t1[2] << endl;  // 输出字t1下标为2的字符。跟C语言的用法一样，不过这里是运算符重载，后面会讲
//     t1[3] = 'x';            // 将下标为3的字符修改为'x'
//     cout << t1 << endl;

//     int n = t1.size();      // 获取字符串的长度（不会计算'\0'）
//     cout << n << endl;

//     // 遍历字符串
//     string t2 = "xyzijk";
//     for(int i = 0; i < t2.size(); i++)
//         cout << t2[i] << ' '; 
//     cout << endl;
    
//     // 也可以用范围for遍历
//     for(auto e : t2)     
//         cout << e << ' ';
//     cout << endl;

//     char s[5] = "yyyy";
//     cout << t2[10] << endl;

//     string t3(4, 'y'); // "yyyy"
//     // string检查越界
//     cout << t3[10] << endl;

//     return 0;
// }


// int main()
// {
//     string t1 = "Hello World";
//     cout << sizeof(t1);
//     // string s = "1234567";
//     // auto i = s.begin();     // i的类型是 string::iterator
//     // while(i != s.end())
//     // {
//     //     cout << *i << ' ';
//     //     i++;
//     // }
//     // cout << endl;

//     // // 修改其内容
//     // i = s.begin();
//     // while(i != s.end())
//     // {
//     //     *i = 'a';
//     //     i++;
//     // }
//     // cout << s << endl;
//     return 0;
// }

// int main()
// {
//     string s;
//     // 1.尾插
//     s.push_back('a');   // 尾插一个字符'a'
//     cout << s << endl;

//     s += 'x';           // 尾插一个字符'x'
//     cout << s << endl;

//     s += "Hello";       // 尾插字符串
//     cout << s << endl;

//     string s1("ijk");
//     s += s1;            // 尾插string类型
//     cout << s << endl;

//     // 2.在指定位置插入
//     string t("Hello C++");
//     t.insert(0, "abc"); // 在下标为0的位置插入"abc"

//     t.insert(1000, "xx");
//     return 0;
// }


// int main()
// {
//     string s1("abcdefghijk");
//     s1.erase(2, 4); // 从下标为2开始，往后删除4个字符
//     cout << s1 << endl << endl;

//     // 当然还有迭代器删除。但是会用上面那个就可以了
//     string s2 = "Hello C++";
//     auto i = s2.erase(s2.begin() + 3); // 删除下标为3的字符
//     cout << s2 << endl << *i << endl << endl;

//     string s3 = "persistence";
//     i = s3.erase(s3.begin(), s3.begin() + 4); // 删除下标在 [0, 4) 区间的字符，左闭右开
//     cout << s3 << endl << *i << endl;
//     return 0;
// }

// int main()
// {
//     string s1("random");
//     s1.replace(2, 3, "xxxxx");  // 将从下标2开始，长度为3的字符串替换为"xxxxx"
//     cout << s1 << endl;

//     string s2("randomization");
//     string t("ppppp");
//     s2.replace(3, 0, t);        // len为0，就相当于是在下标为3的位置插入t
//     cout << s2 << endl;
//     return 0;
// }

// int main()
// {
//     string s = "ababaabca";
//     cout << s.find("aab") << endl; // 缺省参数为0，从头找"aab"首次出现的位置

//     string p = "ab";
//     cout << s.find(p, 3) << endl; // 从下标为3的位置开始查找p首次出现的位置
//     return 0;
// }


// int main()
// {
//     string s = "ababaabca";
//     cout << s.substr(4, 3) << endl; // 从下标4开始，取3个字符。即区间[4, 7)的字串

//     if(s.empty()) cout << "空" << endl;
//     else cout << "非空" << endl;

//     s.clear();  // 清空
//     cout << s << endl;

//     cout << s.length() << endl;     // 返回字符串长度
//     cout << s.capacity() << endl;   // 返回字符串容量

//     s.reserve(100);                 //  预留至少n个存储空间
//     cout << s.capacity() << endl;

//     s.resize(10);                   // 将字符串长度改为n，
//     cout << s.size() << endl;       // 输出10
//     cout << s << endl;

//     s = "apple";
//     cout << s.front() << endl;      // 返回首字符（传引用返回）。输出a
//     cout << s.back() << endl;       // 返回尾字符（传引用返回）。输出e

//     string a = "Hello";
//     string b = " C++";
//     string c = a + b;           // 字符串拼接，operator+ ()
//     cout << c << endl;          // 输出Hello C++
//     return 0;
// }

// int main()
// {
//     string s = "ababaabca";
//     cout << s.find("aab") << endl; // 缺省参数为0，从头找"aab"首次出现的位置

//     string p = "ab";
//     cout << s.find(p, 3) << endl; // 从下标为3的位置开始查找p首次出现的位置

//     cout << s.find('c') << endl; // 从头找字符'c'首次出现的位置
//     return 0;
// }

// int main()
// {
//     string url = "https://editor.csdn.net/md/?articleId=151691236&spm=1011.2415.3001.9698";
//     int p1 = url.find(':');
//     cout << url.substr(0, p1) << endl;

//     int p2 = url.find('/', p1 + 3);
//     cout << url.substr(p1 + 3, p2 - (p1 + 3)) << endl;
//     cout << url.substr(p2 + 1) << endl;
//     return 0;
// }



// // 补充：
// int main()
// {
//     string s;
//     cin >> s;           // 输入 Hello C++!
//     cout << s << endl;  // 输出 Hello
//     // 因为cin读取字符串遇到空格或换行就会停下来, 若要读取一行，就要用getline
//     return 0;
// }

// // getline
// int main()
// {
//     string t;
//     getline(cin, t);
//     cout << t << endl;
//     return 0;
// }

// // to_string
// // 可以将整数、浮点数转化为字符串
// int main()
// {
//     int a = 956, b = 1634;
//     string s = to_string(a + b); // 将

//     string s1 = to_string(3.14);
//     return 0;
// }

int main()
{
    // char s1[] = "abcd";
    // char s2[] = "你好！こんにちは";
    // cout << sizeof (s1) << endl;
    // cout << sizeof (s2) << endl;
    // cout << s2 << endl;
    char s[5] = "";
    s[0] = 228, s[1] = 189, s[2] = 160;
    cout << s << endl;
    return 0;
}